
#ifndef INCLUDE_IO_REUSE_MODULE
#define INCLUDE_IO_REUSE_MODULE

#include <memory>
#include <string>
#include <sys/epoll.h>
#include <vector>
#include "io_reuse_module_impl.h"

class IoReuseModule
{
public:
    IoReuseModule();
    explicit IoReuseModule(IoReuseModuleFactory * factory);
    virtual ~IoReuseModule();
    virtual int64_t AddEvent(int description, int event);
    virtual int64_t ModEvent(int64_t description, int event);
    virtual int64_t DelEvent(int64_t id);
    virtual int     WaitEvent(std::vector<struct EventData> & trigger_event_data, int wait_time);

private:
    std::shared_ptr<IoReuseModuleImpl> m_impl;
};

#endif
